An increasing number of applications today make use of digital video signals for various purposes including, for example, business meetings between people in remote locations via video conferencing, high definition video entertainment, video advertisements, and sharing of user-generated videos. As technology is evolving, users have higher expectations for video quality and resolution even when video signals are transmitted over communications channels having limited bandwidth.
To realize transmission of higher quality video while limiting bandwidth consumption, a number of video compression schemes have been developed—including formats such as VPx, promulgated by Google Inc. of Mountain View, Calif., and H.264, a standard promulgated by ITU-T Video Coding Experts Group (VCEG) and the ISO/IEC Moving Picture Experts Group (MPEG), including present and future versions thereof. H.264 is also known as MPEG-4 Part 10 or MPEG-4 AVC (formally, ISO/IEC 14496-10). These schemes may denote each image of a video as a frame, and subdivide each frame into groups of pixels called macroblocks or blocks.
These compression schemes may use prediction techniques to minimize the amount of data required to transmit video signals by using, for example, the spatial and temporal coherences in video information. Prediction techniques can allow for multiple past transmitted frames and future frames to be used as potential reference frame predictors for macroblocks in a frame. More recently, some predication techniques synthesize predictive reference frames that are not necessarily displayed during the decoding process, such as shown, for example, by U.S. Application Publication No. 2010/0061461, assigned to Google, Inc.
Many prediction techniques use block based prediction and quantized block transforms. The use of block based prediction and quantized block transforms can give rise to discontinuities along block boundaries during encoding. These discontinuities (commonly referred to as blocking artifacts) can be visually disturbing and can reduce the quality of the decoded video and the effectiveness of the reference frame used as a predictor for subsequent frames. These discontinuities can be reduced by the application of a loop filter.
A loop filter is typically applied to a reconstructed frame or a portion of a reconstructed frame at the end of the decoding process. A loop filter is typically used to reduce blocking artifacts. Once a reconstructed frame is processed by the loop filter, it may be used as a predictor for subsequent frames. Some conventional loop filters apply different filtering strengths to different block boundaries. For example, some compression systems vary the strength of the loop filter based on, for example, whether the block has been inter-coded or intra-coded. Other compression systems apply a filter strength from a set of discrete filter strengths based on, for example, motion vector strength and the type of reference frame predictor used, such as shown by U.S. Application Publication No. 2010/0061645.